草庐IT

Android isScreenOn Nullpointer异常

全部标签

PhpStorm 检查错误或错误代码? try block 中未抛出的异常是意外的

我正在使用PhpStorm并在我拥有实例的子类的父类中抛出自定义异常。我没有从子类的父调用中捕获异常,因为我希望捕获它是对子类实例进行调用的代码的责任。PhpStorm提示捕获的异常没有在tryblock中抛出,但是父方法确实抛出它,这个方法是从tryblock中调用的子方法调用的。这是检查员的错误还是我真的做错了什么?下面是一些复制问题的示例代码:testMethod();}}$test=newchildClass;try{$test->doSomething();}catch(testE$e){//^---whydoesthisreportnothrowintry?//Except

php - 在处理另一个异常时,我应该如何处理记录器抛出的异常?

我正在开发一个PHP项目,我在该项目中捕获异常并使用Monolog记录错误并返回一个用户友好的页面作为响应。该项目目前处于婴儿阶段,所以我只是将错误记录到一个文件中,使用Monolog的StreamHandler类在公众无法访问的应用程序目录中,随着我的进步,我意识到这可能如果存在某种IO错误,则会失败,因此我还将登录到数据库(可能是ElasticSearch)并通过电子邮件将严重错误发送给管理员。当我使用StreamHandler时,我可以看到它在无法打开文件时抛出异常。现在,我应该如何处理这种异常情况,如果日志机制本身失败,我应该如何记录它?我可以让另一个记录器处理异常,该记录器会

php - 确保在使用 PHP 时考虑所有异常

我在Java中使用过异常,喜欢它不允许您调用方法的方式,除非您捕获或抛出它可能抛出的异常。我正在PHP中寻找类似的东西。我意识到PHP比Java更动态,甚至不允许您定义它抛出的异常,但我能得到的最接近的是什么?我们使用PHPDoc记录我们的方法,因此如果您在没有正确的try/catchblock的情况下调用方法,或者在没有正确的@thows注释的情况下抛出异常,那么触发E_WARNING的东西将是完美的。 最佳答案 PHP本身无法做到这一点。您将不得不解析PHP并自己弄清楚。尝试写phcplugin为此。

php - 在 PHP 中使用异常的正确方法是什么?

我一直使用“返回状态代码”方法来管理错误。看来异常是当今管理错误的最佳方式。但它们真的是最好的方法吗?我读过像exceptionsareworstthanGoTo这样的东西你知道一些关于异常和错误管理的好文章/帖子/书籍吗? 最佳答案 如果您编写面向对象的程序,也许异常更适合您。如果您编写过程,返回值是更好的方法。这取决于您的编码风格等。 关于php-在PHP中使用异常的正确方法是什么?,我们在StackOverflow上找到一个类似的问题: https://

PHP 异常 - 是否需要 try/catch?

我开始使用“真正的”异常而不是自定义错误函数。我认为我不需要每次都使用try/catch-block,抛出一个异常也没关系,但现在由于这些未捕获的异常,我得到了一个fatalerror。当我设置error_reporting(0)时一切正常,但我想完全避免错误。有谁知道try/catch的替代方法或如何抛出异常而不会出现fatalerror?提前致谢! 最佳答案 您可以使用set_exception_handler()为此并自己处理任何未捕获的异常。您注册的回调将接收异常作为其第一个也是唯一的参数。然而,注册一个虚拟函数是可能的:在

javascript - PHP转JS密码加密算法抛异常

下面是我必须用于我正在构建的控制面板的密码哈希算法。原始函数在PHP中,但我正在重写它以便在JavaScript中与Node.js一起使用。一切似乎都很顺利,但随后我调用了fMod并发生了崩溃:RangeError:toFixed()digitsargumentmustbebetween0and20尽管使用其他值,fmod函数似乎也能正常工作。我在fMod中标记了抛出异常的行。密码的正确哈希值应该是:0x31c7296631df873d0891b7b77ae0c6c6代码://JavaScriptVersionvarpass="Cake99";console.log(pCrypt2(p

php - 重新抛出部分捕获的异常?

我的代码预计在插入远程数据库时偶尔会出现唯一索引冲突。无法避免违规,因为我需要一个随机生成但人类可读的值。不幸的是,当这种情况发生时,PDO只是抛出一个通用的PDOException,所以我有一个包含这种可憎的循环:do{...}catch(PDOException$e){if($e->getCode()==='23000'){continue;//haveanothergo}else{thrownewException("...",1,$e);//reraise}}while(therewasanexception);我认为错误捕获会比搜索然后插入更好,因为使用四位数代码并且任何时候

php - Laravel 错误:方法 Illuminate\View\View::__toString() 不能抛出异常

我正在使用larval4.2,我的wrapper.phpView文件中出现以下错误:with('sidebar',$sidebar)->with('active',$active);?>错误:Error:MethodIlluminate\View\View::__toString()mustnotthrowanexception你知道是什么原因造成的吗? 最佳答案 Laravel通过将Illuminate\View\View对象转换为字符串来呈现其View。如果对象被转换为字符串并设置了__toString方法,PHP将调用__to

PHP Uncaught exception 提供了比捕获的异常更多的细节

我构建了一些api端点,并尝试处理日志记录异常,因此我故意删除数据库并运行端点以获取PDOException。我的问题是,如果我没有捕获异常,当我通过postman运行端点时,它会向我显示更详细的消息、堆栈跟踪等(大约1000行),但是如果我用这样的trycatchblock捕获异常catch(\Exception$exception){print_r($exception->__toString());print_r("\n\n");die;}细节少了很多。这是为什么?无论如何打印我们没有捕获到异常时得到的相同数据? 最佳答案 您

php - 如何在 PHPUnit 中使用数据提供程序测试异常?

PHPUnit有一个非常有用的特性@dataProvider,这允许测试一个方法的多个案例。它还有另一个很酷的注释--@expectedException以确保应用程序在定义的位置抛出正确的Exception。我目前正在针对多种边缘情况测试一种方法,并想像这样结合这两个功能(不是工作代码):classTestMyClass{/***@dataProviderprovideDataForFoo*/publicfunctiontestFoo($paramBar,$paramBuz,$expected){$myObject=newMyClass();$this->assertEquals($